package com.cx.bank.handler.cglibtest;

import net.sf.cglib.proxy.Enhancer;

/**
 * @author jxau_scf
 * @date 2021/8/4 - 15:02
 */
public class CglibProxyTest {
    public static void main(String[] args) {
//        通过cglib动态代理获取代理对象的过程
        Enhancer enhancer = new Enhancer();
        //设置enhancer对象的父类
        enhancer.setSuperclass(Base.class);
        //设置enhancer对象的回调函数
        enhancer.setCallback(new CglibProxy());
        //创建代理对象
        Base base = (Base)enhancer.create();
        //通过代理对象的调用回调方法
        String str = base.add();
        System.out.println(str);


        Class<? extends Base> baseClass = base.getClass();
        //查看增强过的类的父类是不是未增强的Base类
        System.out.println("查看增强过类的的父类:"+baseClass.getSuperclass().getName());
        System.out.println("==========打印增强过的类的所有方法=========");
        System.out.println(baseClass);

        //未增强的Base类
        Base base2 = new Base();
        System.out.println("未增强过的类的父类："+base2.getClass().getSuperclass().getName());
        System.out.println("==========打印未增强过的类的所有方法=========");
        System.out.println(base2.getClass());


    }
}
